/**
 * 自定义异常类
 * 替代Java项目中的CustomException类
 */
const ResultCodeEnum = require('./resultCodeEnum');

class CustomException extends Error {
  /**
   * 构造函数
   * @param {string|Object} code - 错误代码或错误枚举对象
   * @param {string} [msg] - 错误消息（当code为字符串时）
   */
  constructor(code, msg) {
    // 如果code是对象，使用对象的code和msg
    if (typeof code === 'object') {
      super(code.msg);
      this.code = code.code;
      this.msg = code.msg;
    } else {
      // 如果code是字符串，使用code和提供的msg
      super(msg);
      this.code = code;
      this.msg = msg;
    }
    this.name = 'CustomException';
  }
}

module.exports = CustomException;